Donne moi les chiffres quand tu as fini, j’insèrerai
PRISMAstatement::prisma(found = 750,
found_other = 123,
no_dupes = 776,
screened = 776,
screen_exclusions = 13,
full_text = 763,
full_text_exclusions = 17,
qualitative = 746,
quantitative = 319,
width = 800, height = 1200)
dat_tot
## # A tibble: 1 x 3
## n_studies n_nexp_out n_exp_out
## <int> <dbl> <dbl>
## 1 143 8314 7997
dat.borenstein %>%
group_by(outcome_RDoC_agg) %>%
summarise(n_exp = sum(n_exp),
n_nexp = sum(n_nexp),
nstudy1 = n(),
n_study2 = length(unique(ID_study)))
## # A tibble: 4 x 5
## outcome_RDoC_agg n_exp n_nexp nstudy1 n_study2
## <chr> <dbl> <dbl> <int> <int>
## 1 Mixed social processes 5847 5506 90 87
## 2 Reception of facial communication 2046 2120 47 44
## 3 Reception of non-facial communication 522 580 10 9
## 4 Understanding mental states 2766 2670 65 60
synth_n = dat.borenstein %>%
group_by(outcome_RDoC) %>%
summarise(n_exp = sum(n_exp),
n_nexp = sum(n_nexp),
nstudy1 = n(),
n_study2 = length(unique(ID_study)))
synth_n
## # A tibble: 8 x 5
## outcome_RDoC n_exp n_nexp nstudy1 n_stu~1
## <chr> <dbl> <dbl> <int> <int>
## 1 Mixed social processes (adjusted) 277 306 8 8
## 2 Mixed social processes (non-adjusted) 5570 5200 82 82
## 3 Reception of facial communication (adjusted) 425 650 7 7
## 4 Reception of facial communication (non-adjusted) 1621 1470 40 40
## 5 Reception of non-facial communication (adjusted) 171 326 3 3
## 6 Reception of non-facial communication (non-adjus~ 351 254 7 7
## 7 Understanding mental states (adjusted) 245 274 9 9
## 8 Understanding mental states (non-adjusted) 2521 2396 56 56
## # ... with abbreviated variable name 1: n_study2
ggplot(dat.meta, aes(x = es_adj, y = es)) +
geom_jitter(alpha = 0.3, width = 0.35, size = 2) +
geom_violin(size = 0.5, alpha = 0.5) +
theme_bw()
2 plots, tu choisis celui qui tu préfères
ggplot(dat.meta, aes(x = outcome_RDoC_agg, y = es)) +
geom_jitter(width = 0.05, dotsize = 0.1, alpha = 0.2, aes(fill = ID)) + geom_boxplot(trim=FALSE, alpha = 0.6) +
facet_grid(es_adj ~ "") +
theme_bw() +
labs(y = "Standardized mean difference (SMD)", x = "") +
guides(fill=FALSE) +
coord_flip()
ggplot(dat.meta, aes(x = outcome_RDoC_agg, y = es)) +
geom_violin(aes(fill = outcome_RDoC_agg), alpha = 0.3) +
geom_jitter(alpha = 0.2, width = 0.1) +
geom_boxplot(width=0.1)+
facet_grid(es_adj ~ "") +
theme_bw() +
labs(y = "Standardized mean difference (SMD)", x = "") +
theme(text = element_text(size = 18),
legend.position = "none",
axis.title.y = element_text(size=12, face="bold"),
axis.title.x = element_text(size=12, face="bold")) +
coord_flip()
V.SCE <- with(dat.meta,
clubSandwich::impute_covariance_matrix(
vi = se^2,
cluster = ID_study,
r = 0.8,
return_list = FALSE,
smooth_vi = TRUE,
subgroup = outcome_RDoC))
# all.equal(dat.meta$se^2, diag(unlist(V.SCE)))
SCE <- metafor::rma.mv(yi = es, V = V.SCE,
data = dat.meta,
mods = ~ outcome_RDoC - 1,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
SCE.ISQ <- metafor::rma.mv(yi = es, V = V.SCE,
data = dat.meta,
mods = ~ outcome_RDoC - 1)
het = function(x, y) {
i2 = NA
for (i in 1:nrow(vcov(x))) {
i2[i] = 100 * (vcov(x)[i,i] - vcov(y)[i,i]) / vcov(x)[i,i]
}
return(i2)
}
#
# W <- solve(V.SCE)
# X <- model.matrix(SCE)
# P <- W - W %*% X %*% solve(t(X) %*% W %*% X) %*% t(X) %*% W
# 100 * SCE$tau2 / (SCE$tau2 + (SCE$k-SCE$p)/sum(diag(P)))
res.SCE <- data.frame(clubSandwich::coef_test(SCE, vcov = "CR2", cluster = dat.meta$ID_study)) # , cluster = df.ES$researchgroup
res.SCE.ci = data.frame(clubSandwich::conf_int(SCE, vcov = "CR2", cluster = dat.meta$ID_study))
res.SCE$target <- gsub("outcome_RDoC", "", row.names(res.SCE))
res.SCE.ci$target <- gsub("outcome_RDoC", "", row.names(res.SCE.ci))
res.SCE = dplyr::left_join(res.SCE, res.SCE.ci)
res.SCE$I2 = het(SCE, SCE.ISQ)
res_main <- left_join(res.SCE, dat_RDoC)
## Joining, by = "target"
res_main[,c("beta", "SE", "tstat", "df", "p_Satt", "CI_L", "CI_U", "I2", "n_studies", "n_nexp_out" , "n_exp_out")] <- apply(res_main[,c("beta", "SE", "tstat", "df", "p_Satt", "CI_L", "CI_U", "I2", "n_studies", "n_nexp_out" , "n_exp_out")], 2, function(x) round(x, 3))
DT::datatable(res_main,
rownames = FALSE,
extensions = 'Buttons',
options = list( # options
buttons = c('copy', 'excel'),
scrollX = TRUE,
dom = c('ftB'),
autoWidth = TRUE,
columnDefs = list(
list(className = 'dt-center',
targets = "_all"))))
res_main$SE_COR = (res_main$CI_U - res_main$CI_L) / 3.92
res_main$raw_outcome <- gsub(r"{\s*\([^\)]+\)}","",
as.character(res_main$outcome_RDoC))
tab.plot <- data.frame(
Outcome = do.call(rbind, lapply(res_main$outcome_RDoC,
function(x) paste(strwrap(x, width = 60),
collapse = "\n"))),
n_ADHD = res_main$n_exp_out,
n_nexpT = res_main$n_nexp_out,
n_studies = res_main$n_studies,
I2 = paste0(round(res_main$I2), "%"))
value_num_plot = data.frame(apply(res_main[, c("beta", "SE_COR")], 2, function(x) as.numeric(as.character(x))))
forest_modif(x = value_num_plot[ ,c("beta", "SE_COR")],
variant = "classic",
col = "Greys", xlab = "SMD", annotate_CI = TRUE,
study_table = tab.plot,
group = res_main$raw_outcome,
type = "study_only",
text_size = 3.5,
x_limit = c(-1, 2),
N = tab.plot$n_ADHD + tab.plot$n_nexpT,
x_breaks = seq(-3, 3, 1)
)
# windows() ## create window to plot your file
metafor::profile.rma.mv(SCE)
## Profiling tau2 = 1
## Profiling tau2 = 2
## Profiling tau2 = 3
## Profiling tau2 = 4
## Profiling tau2 = 5
## Profiling tau2 = 6
## Profiling tau2 = 7
## Profiling tau2 = 8
# dev.off()
meta.reg <- metafor::rma.mv(yi = es, V = se^2,
data = dat.borenstein,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
mods = ~ outcome_RDoC - 1)
res.S1.a.clean = data.frame(
beta = meta.reg$beta,
se = meta.reg$se,
ci_lo = meta.reg$ci.lb,
ci_up = meta.reg$ci.ub,
pval = meta.reg$pval,
target = gsub("outcome_RDoC", "", row.names(meta.reg$b)))
res.S1 <- left_join(res.S1.a.clean, dat_RDoC)
## Joining, by = "target"
DT::datatable(res.S1,
rownames = FALSE,
extensions = 'Buttons',
options = list( # options
buttons = c('copy', 'excel'),
scrollX = TRUE,
dom = c('ftB'),
autoWidth = TRUE,
columnDefs = list(
list(className = 'dt-center',
targets = "_all"))))
robu.main <- robumeta::robu(es ~ outcome_RDoC - 1,
data = dat.meta,
studynum = ID_study,
var.eff.size = se^2,
modelweights = "CORR",
small = TRUE,
rho = 0.8)
dat_robu_main = data.frame(
beta = robu.main$reg_table$b.r,
se = robu.main$reg_table$SE,
ci_lo = robu.main$reg_table$CI.L,
ci_up = robu.main$reg_table$CI.U,
pval = robu.main$reg_table$prob,
target = gsub("outcome_RDoC", "", row.names(meta.reg$b)),
target2 = robu.main$reg_table$labels)
DT::datatable(dat_robu_main,
rownames = FALSE,
extensions = 'Buttons',
options = list( # options
buttons = c('copy', 'excel'),
scrollX = TRUE,
dom = c('ftB'),
autoWidth = TRUE,
columnDefs = list(
list(className = 'dt-center',
targets = "_all"))))
res.SCE.main = data.frame(
beta = res.SCE$beta,
se = res.SCE$SE,
ci_lo = res.SCE$CI_L,
ci_up = res.SCE$CI_U,
pval = res.SCE$p_Satt,
target =res.SCE$target)
res.SCE.main$Analysis = "SCE approach"
res.S1.a.clean$Analysis = "Borenstein approach"
dat_robu_main$Analysis = "RVE approach"
dat_forest_S1 = bind_rows(res.SCE.main,
res.S1.a.clean,
dat_robu_main)
meta_res_tot = meta::metagen(TE = beta, seTE = (ci_up-ci_lo)/(2*qnorm(.975)),
sm = "SMD", data = dat_forest_S1,
subgroup = target,
studlab = Analysis)
meta::forest(meta_res_tot, random = FALSE, fixed = FALSE,
leftcols = c("studlab"),
text.subgroup.nohet = FALSE, print.tau2 = FALSE, print.I2 = FALSE, print.pval.Q = FALSE,
plotwidth = "15cm", colgap.left = "1cm", colgap.right = "1cm",
leftlabs= c(""),
just = "right", spacing = 0.8)
Nakaraga method
dat.meta$inv_n_tilda <- with(dat.meta, (n_nexp + n_exp)/(n_nexp*n_exp))
dat.meta$sqrt_inv_n_tilda <- with(dat.meta, sqrt(inv_n_tilda))
nak.pb = metafor::rma.mv(yi = es, V = V.SCE,
data = dat.meta,
mods = ~ 1 + sqrt_inv_n_tilda + outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(nak.pb, vcov = "CR2", cluster = dat.meta$ID_study)
## Coef. Estimate
## 1 intrcpt 0.112
## 2 sqrt_inv_n_tilda 5.292
## 3 outcome_RDoCMixed social processes (non-adjusted) -0.114
## 4 outcome_RDoCReception of facial communication (adjusted) -0.708
## 5 outcome_RDoCReception of facial communication (non-adjusted) -0.781
## 6 outcome_RDoCReception of non-facial communication (adjusted) -0.684
## 7 outcome_RDoCReception of non-facial communication (non-adjusted) -0.973
## 8 outcome_RDoCUnderstanding mental states (adjusted) -0.854
## 9 outcome_RDoCUnderstanding mental states (non-adjusted) -0.619
## SE t-stat d.f. p-val (Satt) Sig.
## 1 0.531 0.210 8.94 0.83829
## 2 1.925 2.749 17.93 0.01323 *
## 3 0.257 -0.442 8.45 0.66948
## 4 0.310 -2.283 11.65 0.04204 *
## 5 0.266 -2.940 9.52 0.01556 *
## 6 0.373 -1.835 3.92 0.14184
## 7 0.272 -3.573 9.62 0.00539 **
## 8 0.316 -2.700 9.79 0.02272 *
## 9 0.259 -2.395 9.53 0.03881 *
PET-PEESE method (Stanley 2014)
PET = metafor::rma.mv(yi = es, V = V.SCE,
data = dat.meta,
mods = ~ se,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(PET, vcov = "CR2", cluster = dat.meta$ID_study)
## Coef. Estimate SE t-stat d.f. p-val (Satt) Sig.
## 1 intrcpt -2.89 0.453 -6.36 72.1 <0.001 ***
## 2 se 14.47 1.692 8.55 24.6 <0.001 ***
dat.meta$var = dat.meta$se^2
PET = metafor::rma.mv(yi = es, V = V.SCE,
data = dat.meta,
mods = ~ var,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(PET, vcov = "CR2", cluster = dat.meta$ID_study)
## Coef. Estimate SE t-stat d.f. p-val (Satt) Sig.
## 1 intrcpt -0.853 0.187 -4.56 73.7 <0.001 ***
## 2 var 23.488 2.455 9.57 19.2 <0.001 ***
Split by outcome : Egger’s test + ESS
dat_ess = data.frame(
meta_review = "Haza",
study = dat.borenstein$ID_study,
factor = dat.borenstein$outcome_RDoC,
value = dat.borenstein$es,
se = dat.borenstein$se,
n_cases = dat.borenstein$n_exp,
n_controls = dat.borenstein$n_nexp,
measure = "G")
umb = metaumbrella::umbrella(dat_ess)
## Analyzing factor: Understanding mental states (non-adjusted)
## Analyzing factor: Mixed social processes (non-adjusted)
## Analyzing factor: Mixed social processes (adjusted)
## Analyzing factor: Understanding mental states (adjusted)
## - An error occured when converting the standard error of G to SMD. The standard error of the SMD was assumed to be equal to 'sqrt(1/n_cases + 1/n_controls)'.
## Analyzing factor: Reception of facial communication (non-adjusted)
## Analyzing factor: Reception of non-facial communication (non-adjusted)
## - An error occured when converting the standard error of G to SMD. The standard error of the SMD was assumed to be equal to 'sqrt(1/n_cases + 1/n_controls)'.
## Analyzing factor: Reception of facial communication (adjusted)
## Analyzing factor: Reception of non-facial communication (adjusted)
umb
##
## Umbrella review:
## Factor n_studies total_n
## 1 Understanding mental states (non-adjusted) 56 4917
## 2 Mixed social processes (non-adjusted) 82 10770
## 3 Mixed social processes (adjusted) 8 583
## 4 Understanding mental states (adjusted) 9 519
## 5 Reception of facial communication (non-adjusted) 40 3091
## 6 Reception of non-facial communication (non-adjusted) 7 605
## 7 Reception of facial communication (adjusted) 7 1075
## 8 Reception of non-facial communication (adjusted) 3 497
## n_cases n_controls measure value value_CI eG eG_CI eOR
## 1 2521 2396 G 0.852 [0.686, 1.018] 0.852 [0.686, 1.018] 4.692
## 2 5570 5200 G 1.055 [0.909, 1.201] 1.055 [0.909, 1.201] 6.775
## 3 277 306 G 1.257 [0.607, 1.908] 1.257 [0.607, 1.908] 9.782
## 4 245 274 G 0.879 [0.455, 1.304] 0.879 [0.455, 1.304] 4.928
## 5 1621 1470 G 0.795 [0.63, 0.96] 0.795 [0.63, 0.96] 4.227
## 6 351 254 G 0.968 [0.525, 1.411] 0.968 [0.525, 1.411] 5.784
## 7 425 650 G 0.488 [0.262, 0.714] 0.488 [0.262, 0.714] 2.423
## 8 171 326 G 0.590 [0.008, 1.172] 0.590 [0.008, 1.172] 2.917
## eOR_CI p_value I2 PI_eG PI_eOR egger_p
## 1 [3.473, 6.338] 7.20e-24 85.544 [-0.314, 2.019] [0.565, 38.942] 8.94e-01
## 2 [5.196, 8.835] 2.52e-45 88.429 [-0.2, 2.31] [0.695, 66.024] 1.29e-04
## 3 [3.008, 31.817] 1.51e-04 91.236 [-1.084, 3.598] [0.14, 683.241] 2.73e-01
## 4 [2.283, 10.638] 4.87e-05 79.000 [-0.607, 2.366] [0.332, 73.042] 1.45e-01
## 5 [3.133, 5.704] 4.08e-21 83.903 [-0.164, 1.753] [0.743, 24.048] 5.50e-01
## 6 [2.59, 12.92] 1.86e-05 82.754 [-0.515, 2.45] [0.393, 85.127] 8.53e-01
## 7 [1.608, 3.653] 2.37e-05 64.108 [-0.204, 1.18] [0.691, 8.504] 8.47e-01
## 8 [1.015, 8.385] 4.69e-02 77.993 [-6.381, 7.561] [0, 904222.896] 7.65e-01
## ESB_p power_med JK_p largest_CI_eG largest_CI_eOR rob amstar
## 1 9.79e-01 100 8.30e-23 [-0.304, 0.449] [0.576, 2.258] NA NA
## 2 1.10e-01 100 5.67e-44 [-0.154, 0.883] [0.757, 4.957] NA NA
## 3 6.73e-01 100 1.53e-03 [0.623, 1.315] [3.095, 10.864] NA NA
## 4 3.78e-01 100 3.44e-04 [0.271, 0.939] [1.634, 5.494] NA NA
## 5 7.93e-01 100 7.04e-20 [1.259, 1.804] [9.804, 26.348] NA NA
## 6 3.58e-01 100 6.06e-04 [0.967, 1.419] [5.776, 13.118] NA NA
## 7 4.38e-01 100 6.83e-04 [0.218, 1.22] [1.484, 9.15] NA NA
## 8 4.14e-01 100 2.32e-01 [0.165, 0.879] [1.348, 4.928] NA NA
# metaumbrella::umbrella(subset(dat_ess, factor == "Mixed social processes (non-adjusted)"))[[1]]$egger$p.value
# metafor::regtest(x = dat_sub$es, sei = dat_sub$se, model = "lm", predictor="sei")$pval
Plot
ggplot(dat.borenstein, aes(x=es, y=se)) +
geom_point(alpha = 0.2) +
geom_smooth(method="lm") +
facet_wrap(~outcome_RDoC, scales='free') +
theme_bw()
## `geom_smooth()` using formula 'y ~ x'
SCE.S2 <- metafor::rma.mv(yi = es, V = V.SCE,
data = dat.meta,
mods = ~ type_publication - 1 + outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S2, vcov = "CR2", cluster = dat.meta$ID_study)
## Coef. Estimate
## 1 type_publicationArticle 1.465
## 2 type_publicationConférence 3.702
## 3 type_publicationPoster 1.117
## 4 type_publicationThèse 1.556
## 5 outcome_RDoCMixed social processes (non-adjusted) -0.293
## 6 outcome_RDoCReception of facial communication (adjusted) -1.036
## 7 outcome_RDoCReception of facial communication (non-adjusted) -0.814
## 8 outcome_RDoCReception of non-facial communication (adjusted) -0.996
## 9 outcome_RDoCReception of non-facial communication (non-adjusted) -1.119
## 10 outcome_RDoCUnderstanding mental states (adjusted) -0.737
## 11 outcome_RDoCUnderstanding mental states (non-adjusted) -0.634
## SE t-stat d.f. p-val (Satt) Sig.
## 1 0.234 6.26 7.00 < 0.001 ***
## 2 0.243 15.22 8.21 < 0.001 ***
## 3 0.323 3.46 1.69 0.09368 .
## 4 0.262 5.94 9.69 < 0.001 ***
## 5 0.243 -1.21 8.21 0.26173
## 6 0.238 -4.36 9.32 0.00169 **
## 7 0.247 -3.30 8.74 0.00959 **
## 8 0.383 -2.60 3.72 0.06431 .
## 9 0.270 -4.14 10.85 0.00168 **
## 10 0.267 -2.76 9.37 0.02118 *
## 11 0.242 -2.62 8.73 0.02862 *
ggplot(dat.borenstein, aes(x = type_publication, y = es)) +
geom_point(size = 3, alpha = 0.2) +
geom_boxplot() +
theme_bw()
dat.meta.S3 = subset(dat.meta,
emot_spec %in% c("Happy", "Sad", "Surprise", "Fear", "Disgust", "Anger") &
grepl("Reception of facial", dat.meta$outcome_RDoC, fixed = TRUE) &
!grepl("(adjusted)", dat.meta$outcome_RDoC, fixed = TRUE))
V.SCE.S3 <- with(dat.meta.S3,
clubSandwich::impute_covariance_matrix(
vi = se^2,
cluster = ID_study,
r = 0.8,
return_list = FALSE,
smooth_vi = TRUE,
subgroup = emot_spec))
# all.equal(dat.meta$se^2, diag(unlist(V.SCE)))
SCE.S3 <- metafor::rma.mv(yi = es, V = V.SCE.S3,
data = dat.meta.S3,
mods = ~ emot_spec - 1,
random = ~ emot_spec | ID_study,
struct = "DIAG",
sparse = TRUE)
SCE.ISQ.S3 <- metafor::rma.mv(yi = es, V = V.SCE.S3,
data = dat.meta.S3,
mods = ~ emot_spec - 1)
res.SCE.S3 <- data.frame(clubSandwich::coef_test(SCE.S3, vcov = "CR2", cluster = dat.meta.S3$ID_study)) # , cluster = df.ES$researchgroup
res.SCE.ci.S3 = data.frame(clubSandwich::conf_int(SCE.S3, vcov = "CR2", cluster = dat.meta.S3$ID_study))
res.SCE.S3$emot_spec <- gsub("emot_spec", "", row.names(res.SCE.S3))
res.SCE.ci.S3$emot_spec <- gsub("emot_spec", "", row.names(res.SCE.ci.S3))
res.SCE.S3 = dplyr::left_join(res.SCE.S3, res.SCE.ci.S3)
## Joining, by = c("beta", "SE", "df", "emot_spec")
res.SCE.S3$I2 = het(SCE.S3, SCE.ISQ.S3)
res.SCE.clean.S3 = subset(res.SCE.S3, SE > 0.000001)
dat_emot$emot_spec = dat_emot$nom_sousdim_clean
res_S3 <- left_join(res.SCE.clean.S3, dat_emot)
## Joining, by = "emot_spec"
res_S3[,c("beta", "SE", "tstat", "df", "p_Satt", "CI_L", "CI_U", "I2", "n_studies", "n_nexp_out" , "n_exp_out")] <- apply(res_S3[,c("beta", "SE", "tstat", "df", "p_Satt", "CI_L", "CI_U", "I2", "n_studies", "n_nexp_out" , "n_exp_out")], 2, function(x) round(x, 3))
DT::datatable(res_S3,
rownames = FALSE,
options = list( # options
scrollX = TRUE,
dom = c('ft'),
autoWidth = TRUE,
columnDefs = list(
list(className = 'dt-center',
targets = "_all"))))
res_S3$raw_outcome <- gsub(r"{\s*\([^\)]+\)}","",
as.character(res_S3$nom_sousdim_clean))
tab.plot.S3 <- data.frame(
Outcome = do.call(rbind, lapply(res_S3$nom_sousdim_clean,
function(x) paste(strwrap(x, width = 60),
collapse = "\n"))),
n_ADHD = res_S3$n_exp_out,
n_nexpT = res_S3$n_nexp_out,
n_studies = res_S3$n_studies,
I2 = paste0(round(res_S3$I2), "%"))
value_num_plot_S3 = data.frame(apply(res_S3[, c("beta", "SE")], 2, function(x) as.numeric(as.character(x))))
forest_modif(x = value_num_plot_S3[ ,c("beta", "SE")],
variant = "classic",
col = "Greys", xlab = "SMD", annotate_CI = TRUE,
study_table = tab.plot.S3,
group = res_S3$raw_outcome,
type = "study_only",
text_size = 3.5,
x_limit = c(-1, 2),
N = tab.plot.S3$n_ADHD + tab.plot.S3$n_nexpT,
x_breaks = seq(-3, 3, 1)
)
dat.meta.S6 = subset(dat.meta, !is.na(age) & outcome_RDoC %in% unique(synth_n$outcome_RDoC[synth_n$nstudy1 > 20]))
V.SCE.S6 <- with(dat.meta.S6,
clubSandwich::impute_covariance_matrix(
vi = se^2,
cluster = ID_study,
r = 0.8,
return_list = FALSE,
smooth_vi = TRUE,
subgroup = outcome_RDoC))
SCE.S6 <- metafor::rma.mv(yi = es, V = V.SCE.S6,
data = dat.meta.S6,
mods = ~ age * outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S6, vcov = "CR2", cluster = dat.meta.S6$ID_study)
## Coef. Estimate
## 1 intrcpt 1.52428
## 2 age -0.03170
## 3 outcome_RDoCReception of facial communication (non-adjusted) -0.66832
## 4 outcome_RDoCUnderstanding mental states (non-adjusted) -0.45345
## 5 age:outcome_RDoCReception of facial communication (non-adjusted) 0.01360
## 6 age:outcome_RDoCUnderstanding mental states (non-adjusted) 0.00994
## SE t-stat d.f. p-val (Satt) Sig.
## 1 0.8756 1.7408 18.0 0.0988 .
## 2 0.0845 -0.3749 15.7 0.7127
## 3 1.0129 -0.6598 32.1 0.5141
## 4 1.2157 -0.3730 35.0 0.7114
## 5 0.0978 0.1391 26.6 0.8904
## 6 0.1162 0.0856 30.8 0.9324
anova(SCE.S6, btt=5:6)
##
## Test of Moderators (coefficients 5:6):
## QM(df = 2) = 0.1083, p-val = 0.9473
SCE.S6 <- metafor::rma.mv(yi = es, V = V.SCE.S6,
data = dat.meta.S6,
mods = ~ age + outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S6, vcov = "CR2", cluster = dat.meta.S6$ID_study)
## Coef. Estimate SE
## 1 intrcpt 1.446 0.4127
## 2 age -0.024 0.0388
## 3 outcome_RDoCReception of facial communication (non-adjusted) -0.525 0.1076
## 4 outcome_RDoCUnderstanding mental states (non-adjusted) -0.350 0.1083
## t-stat d.f. p-val (Satt) Sig.
## 1 3.50 43.3 0.00108 **
## 2 -0.62 32.9 0.53974
## 3 -4.88 80.0 < 0.001 ***
## 4 -3.23 98.3 0.00167 **
ggplot(dat.meta.S6, aes(x = age, y = es)) +
facet_wrap(~outcome_RDoC) +
geom_point(size = 2, alpha = 0.2) +
geom_smooth(method ="lm") +
theme_bw()
dat.meta.S6 = subset(dat.meta, !is.na(age_diff) & outcome_RDoC %in% unique(synth_n$outcome_RDoC[synth_n$nstudy1 > 20]))
V.SCE.S6 <- with(dat.meta.S6,
clubSandwich::impute_covariance_matrix(
vi = se^2,
cluster = ID_study,
r = 0.8,
return_list = FALSE,
smooth_vi = TRUE,
subgroup = outcome_RDoC))
SCE.S6 <- metafor::rma.mv(yi = es, V = V.SCE.S6,
data = dat.meta.S6,
mods = ~ age_diff * outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S6, vcov = "CR2", cluster = dat.meta.S6$ID_study)
## Coef.
## 1 intrcpt
## 2 age_diff
## 3 outcome_RDoCReception of facial communication (non-adjusted)
## 4 outcome_RDoCUnderstanding mental states (non-adjusted)
## 5 age_diff:outcome_RDoCReception of facial communication (non-adjusted)
## 6 age_diff:outcome_RDoCUnderstanding mental states (non-adjusted)
## Estimate SE t-stat d.f. p-val (Satt) Sig.
## 1 1.19587 0.0771 15.5165 79.18 < 0.001 ***
## 2 -0.05634 0.2283 -0.2467 3.46 0.81906
## 3 -0.52881 0.1111 -4.7599 81.86 < 0.001 ***
## 4 -0.35974 0.1099 -3.2733 100.11 0.00146 **
## 5 -0.05161 0.2483 -0.2079 5.39 0.84295
## 6 0.00393 0.2578 0.0152 5.35 0.98840
anova(SCE.S6, btt=5:6)
##
## Test of Moderators (coefficients 5:6):
## QM(df = 2) = 1.5728, p-val = 0.4555
SCE.S6 <- metafor::rma.mv(yi = es, V = V.SCE.S6,
data = dat.meta.S6,
mods = ~ age_diff + outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S6, vcov = "CR2", cluster = dat.meta.S6$ID_study)
## Coef. Estimate SE
## 1 intrcpt 1.1952 0.0747
## 2 age_diff -0.0671 0.0600
## 3 outcome_RDoCReception of facial communication (non-adjusted) -0.5314 0.1088
## 4 outcome_RDoCUnderstanding mental states (non-adjusted) -0.3589 0.1089
## t-stat d.f. p-val (Satt) Sig.
## 1 16.01 79.23 < 0.001 ***
## 2 -1.12 6.21 0.30543
## 3 -4.88 82.71 < 0.001 ***
## 4 -3.30 100.08 0.00136 **
ggplot(dat.meta.S6, aes(x = age_diff, y = es)) +
facet_wrap(~outcome_RDoC) +
geom_point(size = 2, alpha = 0.2) +
geom_smooth() +
theme_bw()
dat.meta.S7_a = subset(dat.meta, !is.na(percentage_asd) & outcome_RDoC %in% unique(synth_n$outcome_RDoC[synth_n$nstudy1 > 20]) & percentage_asd %in% c(0,100))
dat.meta.S7_a$percentage_asd = factor(dat.meta.S7_a$percentage_asd)
V.SCE.S7_a <- with(dat.meta.S7_a,
clubSandwich::impute_covariance_matrix(
vi = se^2,
cluster = ID_study,
r = 0.8,
return_list = FALSE,
smooth_vi = TRUE,
subgroup = outcome_RDoC))
SCE.S7_a <- metafor::rma.mv(yi = es, V = V.SCE.S7_a,
data = dat.meta.S7_a,
mods = ~ percentage_asd * outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S7_a, vcov = "CR2", cluster = dat.meta.S7_a$ID_study)
## Coef.
## 1 intrcpt
## 2 percentage_asd100
## 3 outcome_RDoCReception of facial communication (non-adjusted)
## 4 outcome_RDoCUnderstanding mental states (non-adjusted)
## 5 percentage_asd100:outcome_RDoCReception of facial communication (non-adjusted)
## 6 percentage_asd100:outcome_RDoCUnderstanding mental states (non-adjusted)
## Estimate SE t-stat d.f. p-val (Satt) Sig.
## 1 1.334 0.0961 13.88 45.40 < 0.001 ***
## 2 1.059 0.2195 4.82 4.62 0.00588 **
## 3 -0.741 0.1387 -5.34 48.22 < 0.001 ***
## 4 -0.524 0.1413 -3.71 55.82 < 0.001 ***
## 5 -0.979 0.2187 -4.48 2.62 0.02760 *
## 6 -0.752 0.2507 -3.00 3.48 0.04775 *
anova(SCE.S7_a, btt=5:6)
##
## Test of Moderators (coefficients 5:6):
## QM(df = 2) = 188.0490, p-val < .0001
SCE.S7_a_ph = metafor::rma.mv(yi = es, V = V.SCE.S7_a,
data = dat.meta.S7_a,
mods = ~ percentage_asd : outcome_RDoC - 1,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
SCE.S7_a_ph
##
## Multivariate Meta-Analysis Model (k = 370; method: REML)
##
## Variance Components:
##
## outer factor: ID_study (nlvls = 75)
## inner factor: outcome_RDoC (nlvls = 3)
##
## estim sqrt k.lvl fixed
## tau^2.1 0.3634 0.6029 120 no
## tau^2.2 0.2168 0.4656 125 no
## tau^2.3 0.2982 0.5461 125 no
## level
## tau^2.1 Mixed social processes (non-adjusted)
## tau^2.2 Reception of facial communication (non-adjusted)
## tau^2.3 Understanding mental states (non-adjusted)
##
## Test for Residual Heterogeneity:
## QE(df = 364) = 6209.0802, p-val < .0001
##
## Test of Moderators (coefficients 1:6):
## QM(df = 6) = 803.2585, p-val < .0001
##
## Model Results:
##
## estimate
## percentage_asd0:outcome_RDoCMixed social processes (non-adjusted) 1.3335
## percentage_asd100:outcome_RDoCMixed social processes (non-adjusted) 2.3924
## percentage_asd0:outcome_RDoCReception of facial communication (non-adjusted) 0.5930
## percentage_asd100:outcome_RDoCReception of facial communication (non-adjusted) 0.6728
## percentage_asd0:outcome_RDoCUnderstanding mental states (non-adjusted) 0.8093
## percentage_asd100:outcome_RDoCUnderstanding mental states (non-adjusted) 1.1162
## se
## percentage_asd0:outcome_RDoCMixed social processes (non-adjusted) 0.0963
## percentage_asd100:outcome_RDoCMixed social processes (non-adjusted) 0.1062
## percentage_asd0:outcome_RDoCReception of facial communication (non-adjusted) 0.1060
## percentage_asd100:outcome_RDoCReception of facial communication (non-adjusted) 0.1204
## percentage_asd0:outcome_RDoCUnderstanding mental states (non-adjusted) 0.1046
## percentage_asd100:outcome_RDoCUnderstanding mental states (non-adjusted) 0.1158
## zval
## percentage_asd0:outcome_RDoCMixed social processes (non-adjusted) 13.8459
## percentage_asd100:outcome_RDoCMixed social processes (non-adjusted) 22.5275
## percentage_asd0:outcome_RDoCReception of facial communication (non-adjusted) 5.5963
## percentage_asd100:outcome_RDoCReception of facial communication (non-adjusted) 5.5900
## percentage_asd0:outcome_RDoCUnderstanding mental states (non-adjusted) 7.7342
## percentage_asd100:outcome_RDoCUnderstanding mental states (non-adjusted) 9.6370
## pval
## percentage_asd0:outcome_RDoCMixed social processes (non-adjusted) <.0001
## percentage_asd100:outcome_RDoCMixed social processes (non-adjusted) <.0001
## percentage_asd0:outcome_RDoCReception of facial communication (non-adjusted) <.0001
## percentage_asd100:outcome_RDoCReception of facial communication (non-adjusted) <.0001
## percentage_asd0:outcome_RDoCUnderstanding mental states (non-adjusted) <.0001
## percentage_asd100:outcome_RDoCUnderstanding mental states (non-adjusted) <.0001
## ci.lb
## percentage_asd0:outcome_RDoCMixed social processes (non-adjusted) 1.1448
## percentage_asd100:outcome_RDoCMixed social processes (non-adjusted) 2.1843
## percentage_asd0:outcome_RDoCReception of facial communication (non-adjusted) 0.3853
## percentage_asd100:outcome_RDoCReception of facial communication (non-adjusted) 0.4369
## percentage_asd0:outcome_RDoCUnderstanding mental states (non-adjusted) 0.6042
## percentage_asd100:outcome_RDoCUnderstanding mental states (non-adjusted) 0.8892
## ci.ub
## percentage_asd0:outcome_RDoCMixed social processes (non-adjusted) 1.5223
## percentage_asd100:outcome_RDoCMixed social processes (non-adjusted) 2.6006
## percentage_asd0:outcome_RDoCReception of facial communication (non-adjusted) 0.8006
## percentage_asd100:outcome_RDoCReception of facial communication (non-adjusted) 0.9087
## percentage_asd0:outcome_RDoCUnderstanding mental states (non-adjusted) 1.0144
## percentage_asd100:outcome_RDoCUnderstanding mental states (non-adjusted) 1.3432
##
## percentage_asd0:outcome_RDoCMixed social processes (non-adjusted) ***
## percentage_asd100:outcome_RDoCMixed social processes (non-adjusted) ***
## percentage_asd0:outcome_RDoCReception of facial communication (non-adjusted) ***
## percentage_asd100:outcome_RDoCReception of facial communication (non-adjusted) ***
## percentage_asd0:outcome_RDoCUnderstanding mental states (non-adjusted) ***
## percentage_asd100:outcome_RDoCUnderstanding mental states (non-adjusted) ***
##
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(SCE.S7_a_ph, L=c(-1,1,0,0,0,0))
##
## Hypothesis:
## 1: -percentage_asd0:outcome_RDoCMixed social processes (non-adjusted) + percentage_asd100:outcome_RDoCMixed social processes (non-adjusted) = 0
##
## Results:
## estimate se zval pval
## 1: 1.0589 0.0499 21.2046 <.0001
##
## Test of Hypothesis:
## QM(df = 1) = 449.6367, p-val < .0001
anova(SCE.S7_a_ph, L=c(0,0,-1,1,0,0))
##
## Hypothesis:
## 1: -percentage_asd0:outcome_RDoCReception of facial communication (non-adjusted) + percentage_asd100:outcome_RDoCReception of facial communication (non-adjusted) = 0
##
## Results:
## estimate se zval pval
## 1: 0.0799 0.0594 1.3451 0.1786
##
## Test of Hypothesis:
## QM(df = 1) = 1.8092, p-val = 0.1786
anova(SCE.S7_a_ph, L=c(0,0,0,0,-1,1))
##
## Hypothesis:
## 1: -percentage_asd0:outcome_RDoCUnderstanding mental states (non-adjusted) + percentage_asd100:outcome_RDoCUnderstanding mental states (non-adjusted) = 0
##
## Results:
## estimate se zval pval
## 1: 0.3069 0.0520 5.9048 <.0001
##
## Test of Hypothesis:
## QM(df = 1) = 34.8672, p-val < .0001
ggplot(dat.meta.S7_a, aes(x = percentage_asd, y = es)) +
facet_wrap(~outcome_RDoC) +
geom_point(size = 2, alpha = 0.2) +
geom_boxplot(alpha = 0.2) +
theme_bw()
dat.meta.S7_b = subset(dat.meta, !is.na(percentage_cd_odd) & outcome_RDoC %in% unique(synth_n$outcome_RDoC[synth_n$nstudy1 > 20]))
dat.meta.S7_b$percentage_cd_odd = as.numeric(as.character(dat.meta.S7_b$percentage_cd_odd))
V.SCE.S7_b <- with(dat.meta.S7_b,
clubSandwich::impute_covariance_matrix(
vi = se^2,
cluster = ID_study,
r = 0.8,
return_list = FALSE,
smooth_vi = TRUE,
subgroup = outcome_RDoC))
SCE.S7_b <- metafor::rma.mv(yi = es, V = V.SCE.S7_b,
data = dat.meta.S7_b,
mods = ~ percentage_cd_odd * outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S7_b, vcov = "CR2", cluster = dat.meta.S7_b$ID_study)
## Coef.
## 1 intrcpt
## 2 percentage_cd_odd
## 3 outcome_RDoCReception of facial communication (non-adjusted)
## 4 outcome_RDoCUnderstanding mental states (non-adjusted)
## 5 percentage_cd_odd:outcome_RDoCReception of facial communication (non-adjusted)
## 6 percentage_cd_odd:outcome_RDoCUnderstanding mental states (non-adjusted)
## Estimate SE t-stat d.f. p-val (Satt) Sig.
## 1 1.20306 0.12806 9.39 35.39 < 0.001 ***
## 2 0.00375 0.00249 1.51 1.20 0.34286
## 3 -0.53169 0.17011 -3.13 50.61 0.00294 **
## 4 -0.34179 0.16584 -2.06 50.36 0.04449 *
## 5 -0.00342 0.00292 -1.17 1.74 0.37765
## 6 -0.00464 0.00267 -1.74 1.68 0.24759
anova(SCE.S7_b, btt=5:6)
##
## Test of Moderators (coefficients 5:6):
## QM(df = 2) = 17.6356, p-val = 0.0001
SCE.S7_b_ph = metafor::rma.mv(yi = es, V = V.SCE.S7_b,
data = dat.meta.S7_b,
mods = ~ percentage_cd_odd : outcome_RDoC - 1,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S7_b_ph, vcov = "CR2", cluster = dat.meta.S7_b$ID_study)
## Coef.
## 1 percentage_cd_odd:outcome_RDoCMixed social processes (non-adjusted)
## 2 percentage_cd_odd:outcome_RDoCReception of facial communication (non-adjusted)
## 3 percentage_cd_odd:outcome_RDoCUnderstanding mental states (non-adjusted)
## Estimate SE t-stat d.f. p-val (Satt) Sig.
## 1 0.004140 0.00197 2.102 1.14 0.258
## 2 0.000435 0.00153 0.285 2.25 0.800
## 3 -0.000485 0.00103 -0.472 1.27 0.705
ggplot(dat.meta.S7_b, aes(x = percentage_cd_odd, y = es)) +
facet_wrap(~outcome_RDoC) +
geom_point(size = 2, alpha = 0.2) +
geom_smooth(method ="lm") +
theme_bw()
dat.meta.S8 = subset(dat.meta, !is.na(sex) & outcome_RDoC %in% unique(synth_n$outcome_RDoC[synth_n$nstudy1 > 20]))
dat.meta.S8$sex = as.numeric(as.character(dat.meta.S8$sex))
dat.meta.S8$sex[dat.meta.S8$sex > 100] <- NA
V.SCE.S8 <- with(dat.meta.S8,
clubSandwich::impute_covariance_matrix(
vi = se^2,
cluster = ID_study,
r = 0.8,
return_list = FALSE,
smooth_vi = TRUE,
subgroup = outcome_RDoC))
SCE.S8 <- metafor::rma.mv(yi = es, V = V.SCE.S8,
data = dat.meta.S8,
mods = ~ sex * outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S8, vcov = "CR2", cluster = dat.meta.S8$ID_study)
## Coef. Estimate
## 1 intrcpt 1.35547
## 2 sex -0.00549
## 3 outcome_RDoCReception of facial communication (non-adjusted) -0.73378
## 4 outcome_RDoCUnderstanding mental states (non-adjusted) -0.50688
## 5 sex:outcome_RDoCReception of facial communication (non-adjusted) 0.00599
## 6 sex:outcome_RDoCUnderstanding mental states (non-adjusted) 0.00456
## SE t-stat d.f. p-val (Satt) Sig.
## 1 0.18258 7.424 26.64 <0.001 ***
## 2 0.00615 -0.892 5.54 0.4093
## 3 0.27675 -2.651 19.85 0.0154 *
## 4 0.23447 -2.162 28.07 0.0393 *
## 5 0.01019 0.588 9.10 0.5708
## 6 0.00726 0.627 10.31 0.5440
anova(SCE.S8, btt=5:6)
##
## Test of Moderators (coefficients 5:6):
## QM(df = 2) = 2.2717, p-val = 0.3211
SCE.S8 <- metafor::rma.mv(yi = es, V = V.SCE.S8,
data = dat.meta.S8,
mods = ~ sex + outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S8, vcov = "CR2", cluster = dat.meta.S8$ID_study)
## Coef. Estimate SE
## 1 intrcpt 1.30381 0.13687
## 2 sex -0.00365 0.00434
## 3 outcome_RDoCReception of facial communication (non-adjusted) -0.57444 0.11693
## 4 outcome_RDoCUnderstanding mental states (non-adjusted) -0.38940 0.11216
## t-stat d.f. p-val (Satt) Sig.
## 1 9.53 52.6 <0.001 ***
## 2 -0.84 10.8 0.419
## 3 -4.91 65.7 <0.001 ***
## 4 -3.47 88.6 <0.001 ***
ggplot(dat.meta.S8, aes(x = sex, y = es)) +
facet_wrap(~outcome_RDoC) +
geom_point(size = 2, alpha = 0.2) +
geom_smooth(method ="lm") +
theme_bw()
dat.meta.S9 = subset(dat.meta, !is.na(iq) & outcome_RDoC %in% unique(synth_n$outcome_RDoC[synth_n$nstudy1 > 20]))
dat.meta.S9$iq = as.numeric(as.character(dat.meta.S9$iq))
# dat.meta.S9$iq[dat.meta.S9$iq > 100] <- NA
V.SCE.S9 <- with(dat.meta.S9,
clubSandwich::impute_covariance_matrix(
vi = se^2,
cluster = ID_study,
r = 0.8,
return_list = FALSE,
smooth_vi = TRUE,
subgroup = outcome_RDoC))
SCE.S9 <- metafor::rma.mv(yi = es, V = V.SCE.S9,
data = dat.meta.S9,
mods = ~ iq * outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S9, vcov = "CR2", cluster = dat.meta.S9$ID_study)
## Coef. Estimate
## 1 intrcpt -0.74569
## 2 iq 0.01922
## 3 outcome_RDoCReception of facial communication (non-adjusted) 2.00949
## 4 outcome_RDoCUnderstanding mental states (non-adjusted) -0.80599
## 5 iq:outcome_RDoCReception of facial communication (non-adjusted) -0.02588
## 6 iq:outcome_RDoCUnderstanding mental states (non-adjusted) 0.00242
## SE t-stat d.f. p-val (Satt) Sig.
## 1 7.1471 -0.1043 5.69 0.920
## 2 0.0687 0.2797 5.83 0.789
## 3 7.4170 0.2709 8.09 0.793
## 4 9.2142 -0.0875 5.40 0.933
## 5 0.0712 -0.3633 8.12 0.726
## 6 0.0884 0.0273 5.28 0.979
anova(SCE.S9, btt=5:6)
##
## Test of Moderators (coefficients 5:6):
## QM(df = 2) = 2.1447, p-val = 0.3422
SCE.S9 <- metafor::rma.mv(yi = es, V = V.SCE.S9,
data = dat.meta.S9,
mods = ~ iq + outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S9, vcov = "CR2", cluster = dat.meta.S9$ID_study)
## Coef. Estimate SE
## 1 intrcpt -0.2311 3.9819
## 2 iq 0.0143 0.0384
## 3 outcome_RDoCReception of facial communication (non-adjusted) -0.6723 0.1555
## 4 outcome_RDoCUnderstanding mental states (non-adjusted) -0.5485 0.1374
## t-stat d.f. p-val (Satt) Sig.
## 1 -0.058 9.70 0.955
## 2 0.372 9.74 0.718
## 3 -4.323 40.90 <0.001 ***
## 4 -3.991 45.07 <0.001 ***
ggplot(dat.meta.S9, aes(x = iq, y = es)) +
facet_wrap(~outcome_RDoC) +
geom_point(size = 2, alpha = 0.2) +
geom_smooth(method ="lm") +
theme_bw()
dat.meta.S9 = subset(dat.meta, !is.na(iq_diff) & outcome_RDoC %in% unique(synth_n$outcome_RDoC[synth_n$nstudy1 > 20]))
dat.meta.S9$iq_diff = as.numeric(as.character(dat.meta.S9$iq_diff))
SCE.S9 <- metafor::rma.mv(yi = es, V = V.SCE.S9,
data = dat.meta.S9,
mods = ~ iq_diff * outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S9, vcov = "CR2", cluster = dat.meta.S9$ID_study)
## Coef. Estimate
## 1 intrcpt 1.34865
## 2 iq_diff 0.01092
## 3 outcome_RDoCReception of facial communication (non-adjusted) -0.79154
## 4 outcome_RDoCUnderstanding mental states (non-adjusted) -0.53943
## 5 iq_diff:outcome_RDoCReception of facial communication (non-adjusted) -0.01467
## 6 iq_diff:outcome_RDoCUnderstanding mental states (non-adjusted) 0.00258
## SE t-stat d.f. p-val (Satt) Sig.
## 1 0.4013 3.3608 29.78 0.00215 **
## 2 0.0434 0.2517 5.44 0.81054
## 3 0.4120 -1.9213 35.73 0.06269 .
## 4 0.4730 -1.1403 33.53 0.26223
## 5 0.0461 -0.3180 3.31 0.76950
## 6 0.0539 0.0479 5.86 0.96336
anova(SCE.S9, btt=5:6)
##
## Test of Moderators (coefficients 5:6):
## QM(df = 2) = 1.8788, p-val = 0.3909
SCE.S9 <- metafor::rma.mv(yi = es, V = V.SCE.S9,
data = dat.meta.S9,
mods = ~ iq_diff + outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S9, vcov = "CR2", cluster = dat.meta.S9$ID_study)
## Coef. Estimate SE
## 1 intrcpt 1.33590 0.2554
## 2 iq_diff 0.00947 0.0245
## 3 outcome_RDoCReception of facial communication (non-adjusted) -0.72144 0.1925
## 4 outcome_RDoCUnderstanding mental states (non-adjusted) -0.55459 0.1391
## t-stat d.f. p-val (Satt) Sig.
## 1 5.231 33.20 <0.001 ***
## 2 0.387 8.54 0.708
## 3 -3.747 41.13 <0.001 ***
## 4 -3.988 44.95 <0.001 ***
ggplot(dat.meta.S9, aes(x = iq_diff, y = es)) +
facet_wrap(~outcome_RDoC) +
geom_point(size = 2, alpha = 0.2) +
geom_smooth(method ="lm") +
theme_bw()
dat.meta.S10 = subset(dat.meta, !is.na(rob_tot) & outcome_RDoC %in% unique(synth_n$outcome_RDoC[synth_n$nstudy1 > 20]))
V.SCE.S10 <- with(dat.meta.S10,
clubSandwich::impute_covariance_matrix(
vi = se^2,
cluster = ID_study,
r = 0.8,
return_list = FALSE,
smooth_vi = TRUE,
subgroup = outcome_RDoC))
SCE.S10 <- metafor::rma.mv(yi = es, V = V.SCE.S10,
data = dat.meta.S10,
mods = ~ rob_tot * outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S10, vcov = "CR2", cluster = dat.meta.S10$ID_study)
## Coef. Estimate
## 1 intrcpt 0.8151
## 2 rob_tot 0.0662
## 3 outcome_RDoCReception of facial communication (non-adjusted) -0.7100
## 4 outcome_RDoCUnderstanding mental states (non-adjusted) -0.0865
## 5 rob_tot:outcome_RDoCReception of facial communication (non-adjusted) 0.0216
## 6 rob_tot:outcome_RDoCUnderstanding mental states (non-adjusted) -0.0492
## SE t-stat d.f. p-val (Satt) Sig.
## 1 0.1391 5.861 5.04 0.0020 **
## 2 0.0213 3.103 3.86 0.0379 *
## 3 0.3714 -1.912 19.93 0.0704 .
## 4 0.2654 -0.326 4.79 0.7584
## 5 0.0624 0.347 18.45 0.7326
## 6 0.0409 -1.203 3.95 0.2962
anova(SCE.S10, btt=5:6)
##
## Test of Moderators (coefficients 5:6):
## QM(df = 2) = 1.6206, p-val = 0.4447
SCE.S10 <- metafor::rma.mv(yi = es, V = V.SCE.S10,
data = dat.meta.S10,
mods = ~ rob_tot + outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S10, vcov = "CR2", cluster = dat.meta.S10$ID_study)
## Coef. Estimate SE
## 1 intrcpt 0.8924 0.1149
## 2 rob_tot 0.0529 0.0162
## 3 outcome_RDoCReception of facial communication (non-adjusted) -0.5674 0.1038
## 4 outcome_RDoCUnderstanding mental states (non-adjusted) -0.3914 0.1076
## t-stat d.f. p-val (Satt) Sig.
## 1 7.77 8.49 <0.001 ***
## 2 3.26 5.16 0.0215 *
## 3 -5.47 82.30 <0.001 ***
## 4 -3.64 96.23 <0.001 ***
ggplot(dat.meta.S10, aes(x = rob_tot, y = es)) +
facet_wrap(~outcome_RDoC) +
geom_point(size = 2, alpha = 0.2) +
geom_smooth() + #method ="lm"
theme_bw()
dat.meta.S11 = subset(dat.meta, !is.na(type_mesure) & outcome_RDoC== "Understanding mental states (non-adjusted)")
dat.meta.S11$vi = dat.meta.S11$se^2
dat.meta.S11$es_id = 1:nrow(dat.meta.S11)
SCE.S11 <- metafor::rma.mv(yi = es, V = vi,
data = dat.meta.S11,
mods = ~ type_mesure ,
random = ~ 1 | ID_study/es_id)
metafor::rma.mv(yi = es, V = vi,
data = dat.meta.S11,
mods = ~ type_mesure - 1,
random = ~ 1 | ID_study/es_id)
##
## Multivariate Meta-Analysis Model (k = 186; method: REML)
##
## Variance Components:
##
## estim sqrt nlvls fixed factor
## sigma^2.1 0.2319 0.4816 56 no ID_study
## sigma^2.2 0.1641 0.4051 186 no ID_study/es_id
##
## Test for Residual Heterogeneity:
## QE(df = 184) = 1026.5716, p-val < .0001
##
## Test of Moderators (coefficients 1:2):
## QM(df = 2) = 112.2219, p-val < .0001
##
## Model Results:
##
## estimate se zval pval ci.lb ci.ub
## type_mesureParadigm 0.7539 0.0819 9.2007 <.0001 0.5933 0.9145 ***
## type_mesureReport 1.0250 0.1322 7.7512 <.0001 0.7658 1.2841 ***
##
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
ggplot(dat.meta.S11, aes(x = type_mesure, y = es)) +
facet_wrap(~outcome_RDoC) +
geom_point(size = 2, alpha = 0.2) +
geom_boxplot(alpha = 0.2) +
geom_smooth() + #method ="lm"
theme_bw()
dat.meta.S12.a = subset(dat.meta, !is.na(percentage_inattentive) & outcome_RDoC %in% unique(synth_n$outcome_RDoC[synth_n$nstudy1 > 20]))
dat.meta.S12.a$percentage_inattentive = as.numeric(as.character(dat.meta.S12.a$percentage_inattentive))
V.SCE.S12.a <- with(dat.meta.S12.a,
clubSandwich::impute_covariance_matrix(
vi = se^2,
cluster = ID_study,
r = 0.8,
return_list = FALSE,
smooth_vi = TRUE,
subgroup = outcome_RDoC))
SCE.S12.a <- metafor::rma.mv(yi = es, V = V.SCE.S12.a,
data = dat.meta.S12.a,
mods = ~ percentage_inattentive * outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S12.a, vcov = "CR2", cluster = dat.meta.S12.a$ID_study)
## Coef.
## 1 intrcpt
## 2 percentage_inattentive
## 3 outcome_RDoCReception of facial communication (non-adjusted)
## 4 outcome_RDoCUnderstanding mental states (non-adjusted)
## 5 percentage_inattentive:outcome_RDoCReception of facial communication (non-adjusted)
## 6 percentage_inattentive:outcome_RDoCUnderstanding mental states (non-adjusted)
## Estimate SE t-stat d.f. p-val (Satt) Sig.
## 1 1.33e+00 0.113394 11.6994 33.72 < 0.001 ***
## 2 -2.86e-03 0.000694 -4.1223 1.13 0.12853
## 3 -5.51e-01 0.204848 -2.6877 14.62 0.01716 *
## 4 -4.71e-01 0.168153 -2.8035 41.71 0.00764 **
## 5 -7.52e-05 0.005913 -0.0127 8.43 0.99016
## 6 3.66e-03 0.000899 4.0779 1.12 0.13266
anova(SCE.S12.a, btt=5:6)
##
## Test of Moderators (coefficients 5:6):
## QM(df = 2) = 33.4423, p-val < .0001
SCE.S12.a <- metafor::rma.mv(yi = es, V = V.SCE.S12.a,
data = dat.meta.S12.a,
mods = ~ percentage_inattentive:outcome_RDoC - 1,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S12.a, vcov = "CR2", cluster = dat.meta.S12.a$ID_study)
## Coef.
## 1 percentage_inattentive:outcome_RDoCMixed social processes (non-adjusted)
## 2 percentage_inattentive:outcome_RDoCReception of facial communication (non-adjusted)
## 3 percentage_inattentive:outcome_RDoCUnderstanding mental states (non-adjusted)
## Estimate SE t-stat d.f. p-val (Satt) Sig.
## 1 -0.002799 0.000796 -3.52 1.13 0.1538
## 2 0.013239 0.005376 2.46 7.34 0.0418 *
## 3 0.000975 0.000331 2.95 1.05 0.1993
ggplot(dat.meta.S12.a, aes(x = percentage_inattentive, y = es)) +
facet_wrap(~outcome_RDoC) +
geom_point(size = 2, alpha = 0.2) +
geom_smooth(method ="lm") +
theme_bw()
dat.meta.S12.b = subset(dat.meta, !is.na(percentage_hyperactive) & outcome_RDoC %in% unique(synth_n$outcome_RDoC[synth_n$nstudy1 > 20]))
dat.meta.S12.b$percentage_hyperactive = as.numeric(as.character(dat.meta.S12.b$percentage_hyperactive))
V.SCE.S12.b <- with(dat.meta.S12.b,
clubSandwich::impute_covariance_matrix(
vi = se^2,
cluster = ID_study,
r = 0.8,
return_list = FALSE,
smooth_vi = TRUE,
subgroup = outcome_RDoC))
SCE.S12.b <- metafor::rma.mv(yi = es, V = V.SCE.S12.b,
data = dat.meta.S12.b,
mods = ~ percentage_hyperactive * outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S12.b, vcov = "CR2", cluster = dat.meta.S12.b$ID_study)
## Coef.
## 1 intrcpt
## 2 percentage_hyperactive
## 3 outcome_RDoCReception of facial communication (non-adjusted)
## 4 outcome_RDoCUnderstanding mental states (non-adjusted)
## 5 percentage_hyperactive:outcome_RDoCReception of facial communication (non-adjusted)
## 6 percentage_hyperactive:outcome_RDoCUnderstanding mental states (non-adjusted)
## Estimate SE t-stat d.f. p-val (Satt) Sig.
## 1 1.260673 0.1580 7.980 32.46 < 0.001 ***
## 2 0.000806 0.0106 0.076 1.16 0.95043
## 3 -0.606758 0.2032 -2.986 35.80 0.00508 **
## 4 -0.432361 0.2143 -2.017 40.58 0.05030 .
## 5 0.003804 0.0120 0.317 1.61 0.78777
## 6 0.006232 0.0195 0.320 1.94 0.77986
anova(SCE.S12.b, btt=5:6)
##
## Test of Moderators (coefficients 5:6):
## QM(df = 2) = 2.6689, p-val = 0.2633
SCE.S12.b <- metafor::rma.mv(yi = es, V = V.SCE.S12.b,
data = dat.meta.S12.b,
mods = ~ percentage_hyperactive+outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S12.b, vcov = "CR2", cluster = dat.meta.S12.b$ID_study)
## Coef. Estimate SE
## 1 intrcpt 1.25130 0.13738
## 2 percentage_hyperactive 0.00177 0.00721
## 3 outcome_RDoCReception of facial communication (non-adjusted) -0.57187 0.16799
## 4 outcome_RDoCUnderstanding mental states (non-adjusted) -0.38319 0.16789
## t-stat d.f. p-val (Satt) Sig.
## 1 9.108 32.74 < 0.001 ***
## 2 0.246 1.52 0.83505
## 3 -3.404 39.13 0.00155 **
## 4 -2.282 42.43 0.02754 *
ggplot(dat.meta.S12.b, aes(x = percentage_hyperactive, y = es)) +
facet_wrap(~outcome_RDoC) +
geom_point(size = 2, alpha = 0.2) +
geom_smooth(method ="lm") +
theme_bw()
dat.meta.S12.c = subset(dat.meta, !is.na(percentage_combined) & outcome_RDoC %in% unique(synth_n$outcome_RDoC[synth_n$nstudy1 > 20]))
dat.meta.S12.c$percentage_combined = as.numeric(as.character(dat.meta.S12.c$percentage_combined))
V.SCE.S12.c <- with(dat.meta.S12.c,
clubSandwich::impute_covariance_matrix(
vi = se^2,
cluster = ID_study,
r = 0.8,
return_list = FALSE,
smooth_vi = TRUE,
subgroup = outcome_RDoC))
SCE.S12.c <- metafor::rma.mv(yi = es, V = V.SCE.S12.c,
data = dat.meta.S12.c,
mods = ~ percentage_combined * outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S12.c, vcov = "CR2", cluster = dat.meta.S12.c$ID_study)
## Coef.
## 1 intrcpt
## 2 percentage_combined
## 3 outcome_RDoCReception of facial communication (non-adjusted)
## 4 outcome_RDoCUnderstanding mental states (non-adjusted)
## 5 percentage_combined:outcome_RDoCReception of facial communication (non-adjusted)
## 6 percentage_combined:outcome_RDoCUnderstanding mental states (non-adjusted)
## Estimate SE t-stat d.f. p-val (Satt) Sig.
## 1 1.06028 0.129159 8.209 31.17 <0.001 ***
## 2 0.00298 0.000578 5.153 1.06 0.1111
## 3 -0.26176 0.339581 -0.771 7.55 0.4643
## 4 -0.12496 0.182378 -0.685 37.05 0.4975
## 5 -0.00462 0.004235 -1.090 7.46 0.3097
## 6 -0.00389 0.000623 -6.232 1.12 0.0831 .
anova(SCE.S12.c, btt=5:6)
##
## Test of Moderators (coefficients 5:6):
## QM(df = 2) = 38.0173, p-val < .0001
SCE.S12.c <- metafor::rma.mv(yi = es, V = V.SCE.S12.c,
data = dat.meta.S12.c,
mods = ~ percentage_combined+outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S12.c, vcov = "CR2", cluster = dat.meta.S12.c$ID_study)
## Coef. Estimate
## 1 intrcpt 1.15582
## 2 percentage_combined 0.00153
## 3 outcome_RDoCReception of facial communication (non-adjusted) -0.55806
## 4 outcome_RDoCUnderstanding mental states (non-adjusted) -0.36543
## SE t-stat d.f. p-val (Satt) Sig.
## 1 0.123545 9.36 32.70 < 0.001 ***
## 2 0.000438 3.50 1.13 0.15451
## 3 0.166053 -3.36 39.26 0.00174 **
## 4 0.169493 -2.16 42.64 0.03677 *
ggplot(dat.meta.S12.c, aes(x = percentage_combined, y = es)) +
facet_wrap(~outcome_RDoC) +
geom_point(size = 2, alpha = 0.2) +
geom_smooth(method ="lm") +
theme_bw()